lib: xxh64: fix byte ordering issue on big-endian systems
authorNoah Meyerhans <noahm@debian.org>
Wed, 2 Sep 2026 16:17:57 +0000 (12:17 -0400)
committerNoah Meyerhans <noahm@debian.org>
Wed, 2 Sep 2026 16:17:57 +0000 (12:17 -0400)
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1146449
Forwarded: https://github.com/dovecot/core/pull/314
Last-Update: 2026-09-01

Last-Update: 2026-09-01
Gbp-Pq: Name xxh64-endian-fix.patch

src/lib/xxh64.c

index 1c17833afd439267348f5147ee7980bc84df6102..4a151bd0c27a0236a461107a1f21fd2782069666 100644 (file)
@@ -8,6 +8,8 @@
 #include "lib.h"
 #include "xxh64.h"
 
+#include <endian.h>
+
 #define XXH64_PRIME1  UINT64_C(0x9E3779B185EBCA87)
 #define XXH64_PRIME2  UINT64_C(0xC2B2AE3D27D4EB4F)
 #define XXH64_PRIME3  UINT64_C(0x165667B19E3779F9)
@@ -20,14 +22,14 @@ static inline uint64_t xxh64_read64(const void *p)
 {
        uint64_t v;
        memcpy(&v, p, sizeof(v));
-       return v;
+       return le64toh(v);  /* Convert from little-endian to host byte order */
 }
 
 static inline uint32_t xxh64_read32(const void *p)
 {
        uint32_t v;
        memcpy(&v, p, sizeof(v));
-       return v;
+       return le32toh(v);  /* Convert from little-endian to host byte order */
 }
 
 static uint64_t ATTR_UNSIGNED_WRAPS xxh64_round(uint64_t acc, uint64_t input)